#ifndef __WIZ_BNF_PARSER_UNARY_HPP__SHANHAOBO_19800429__
#define __WIZ_BNF_PARSER_UNARY_HPP__SHANHAOBO_19800429__

#include "./WizBNFParser.hpp"

namespace Wiz
{
    namespace BNF
    {
        namespace Parser
        {
            namespace Unary
            {
                template <typename SubjectT, typename BaseT>
                struct Type : public BaseT
                {
                    typedef ::Wiz::BNF::Parser::Category::Unary     tCategory;
                    typedef BaseT                                   tSuper;
                    typedef const SubjectT&                         tSubjectIn;
                    typedef const SubjectT&                         tSubjectResult;
                    typedef typename SubjectT::tEmbedded            tSubjectEmbedded;

                    Type(tSubjectIn Sbjct) : tSuper(), m_Subject(Sbjct)
                    {}

                    tSubjectResult Subject() const
                    {
                        return m_Subject;
                    }

                    tSubjectEmbedded m_Subject;
                }; /// end of struct Type
            } /// end of namespace Unary
        } /// end of namespace Parser
    } /// end of namespace BNF
} /// end of namespace Wiz

#endif /*__WIZ_BNF_PARSER_UNARY_HPP__SHANHAOBO_19800429__*/
